﻿using System.Text;

namespace los24
{
    internal class class24
    {
        static void Main(string[] args)
        {
            Console.WriteLine("StringBuilder");
            //C#提供的一个用于处理字符串的公共类
            //主要解决的问题是：
            //修改字符串而不创建新对象，需要频繁修改和拼接的字符串可以使用它，可以提升性能

            //初始化  直接指名内容
            StringBuilder sb = new StringBuilder("063067",20);//本质上是字符数组
            //在后面加上,数字可以自定义房间数
            Console.WriteLine(sb);

            //容量
            //StringBuilder存在一个容量问题，每次往里面增加时 会自动扩容
            //也就是说，它本身自带一定的容量，每次增加不需要修改内存（？），产生的垃圾就会很少
            
            //获得容量
            Console.WriteLine(sb.Capacity);//有20个房间（默认16个房间）
            //获得字符长度
            Console.WriteLine(sb.Length);

            //增删查改
            //增
            sb.Append("014");//直接加
            Console.WriteLine(sb);
            Console.WriteLine(sb.Capacity);
            Console.WriteLine(sb.Length);

            sb.AppendFormat("{0}{1}",66,99);//拼接形式添加
            Console.WriteLine(sb);
            Console.WriteLine(sb.Capacity);
            Console.WriteLine(sb.Length);
            //插入
            sb.Insert(3,"charlie");
            Console.WriteLine(sb);

            //删
            sb.Remove(0,2);
            Console.WriteLine(sb);
            //清空
            //sb.Clear();
            //Console.WriteLine(sb);

            //查
            Console.WriteLine(sb[4]);

            //改
            sb[0] = 'A';
            Console.WriteLine(sb);
            //替换
            sb.Replace("0", "秦");
            Console.WriteLine(sb);

            //重新赋值 StringBuilder
            sb.Clear();//先清除
            sb.Append("秦洛南秦洛北");//再添加
            Console.WriteLine(sb);

            //判断StringBuilder是否和某一个字符串相等
            if (sb.Equals("秦洛南"))
            {
                Console.WriteLine("相等");
            }
        }
    }
}
